package com.ruoyi.fire.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 设备信息对象 t_device
 *
 * @author ruoyi
 * @date 2025-11-05
 */
@Data
@ApiModel(value = "TDevice", description = "设备信息对象")
public class TDevice extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 设备ID
     */
    @ApiModelProperty("设备ID")
    @JSONField(name = "device_id")
    @Excel(name = "设备ID")
    private String deviceId;

    /**
     * 所属联网单位
     */
    @ApiModelProperty("所属联网单位")
    @JSONField(name = "unit_id")
    @Excel(name = "所属联网单位")
    private String unitId;

    /**
     * 设施名称
     */
    @ApiModelProperty("设施名称")
    @JSONField(name = "device_name")
    @Excel(name = "设施名称")
    private String deviceName;

    /**
     * 设施类型，通过基础数据设备类型接口获取
     */
    @ApiModelProperty("设施类型")
    @JSONField(name = "device_type_id")
    @Excel(name = "设施类型，通过基础数据设备类型接口获取")
    private Long deviceTypeId;

    /**
     * 生产公司
     */
    @ApiModelProperty("生产公司")
    @JSONField(name = "produce_company")
    @Excel(name = "生产公司")
    private String produceCompany;

    /**
     * 生产日期，格式：2017-01-01 00:00:00
     */
    @ApiModelProperty("生产日期")
    @JSONField(name = "produce_date")
    @Excel(name = "生产日期，格式：2017-01-01 00:00:00")
    private String produceDate;

    /**
     * 报废日期，格式：2017-01-01 00:00:00
     */
    @ApiModelProperty("报废日期")
    @JSONField(name = "scrap_date")
    @Excel(name = "报废日期，格式：2017-01-01 00:00:00")
    private String scrapDate;

    /**
     * 设备编号
     */
    @ApiModelProperty("设备编号")
    @JSONField(name = "device_code")
    @Excel(name = "设备编号")
    private String deviceCode;

    /**
     * 设备型号
     */
    @ApiModelProperty("设备型号")
    @JSONField(name = "device_model")
    @Excel(name = "设备型号")
    private String deviceModel;

    /**
     * 所属建筑物
     */
    @ApiModelProperty("所属建筑物")
    @JSONField(name = "building_id")
    @Excel(name = "所属建筑物")
    private Long buildingId;

    /**
     * 所属楼层
     */
    @ApiModelProperty("所属楼层")
    @JSONField(name = "floor_id")
    @Excel(name = "所属楼层")
    private Long floorId;

    /**
     * 设备位置
     */
    @Excel(name = "设备位置")
    @ApiModelProperty("设备位置")
    @JSONField(name = "device_address")
    private String deviceAddress;

    /**
     * 其他扩展信息，格式为json字符串
     */
    @ApiModelProperty("其他扩展信息")
    @JSONField(name = "extra_data")
    @Excel(name = "其他扩展信息，格式为json字符串")
    private String extraData;

    /**
     * 推送状态 0-未推送 1-推送失败 2-推送成功
     */
    @ApiModelProperty("推送状态 0-未推送 1-推送失败 2-推送成功")
    private String pushStatus;

    /**
     * 创建用户ID
     */
    @ApiModelProperty("创建用户ID")
    private Long createUserId;

    /**
     * 设备品类 1-网关协议 0-水协议
     */
    @ApiModelProperty("设备品类 1-网关协议 0-水协议")
    private String deviceCategory;

    /**
     * 阈值上限
     */
    @ApiModelProperty("阈值上限")
    private String deviceMax;

    /**
     * 阈值下限
     */
    @ApiModelProperty("阈值下限")
    private String deviceMin;

    /**
     * 设备状态 0-停用 1-启用
     */
    @ApiModelProperty("设备状态 0-停用 1-启用")
    private String deviceStatus;

    /**
     * 在线状态 0-离线 1-在线
     */
    @ApiModelProperty("在线状态 0-离线 1-在线")
    private String onlineStatus;

    /**
     * 删除标识
     */
    private String delFlag;

    /**
     * 最新值
     */
    @ApiModelProperty("最新值")
    @TableField(exist = false)
    private String latestValue;

    /**
     * 单位信息
     */
    @ApiModelProperty("单位信息")
    @TableField(exist = false)
    private TUnit unitInfo;
}
